package com.easylinkin.linkappapi.reportCenter.constant;

import lombok.Getter;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 告警枚举
 * @author kan yuanfeng
 */
@Getter
public enum AlarmEnum {
//    智能水表告警：智能水表-告警类型
//    智能三相电表，单相告警，智能电表-告警类型
//    扬尘监测告警：环境监测-告警类型
//    电气火灾告警：电气火灾-告警类型
//    塔吊告警：塔吊-告警类型
//    升降机告警：升降机-告警类型
//    卸料平台告警：卸料平台-告警类型
//    AI识别：取设备告警数据，不需要配置规则
    /**
     * 智能水表告警
     */
    WATER(1,"智能水表告警","智能水表-"),

    /**
     * 智能三相电表
     */
    ELEC(2,"智能电表告警","智能电表-"),

    /**
     * 扬尘监测告警
     */
    DUST(3,"扬尘监测告警","环境监测-"),

    /**
     * 电气火灾告警
     */
    FIRE(4,"电气火灾告警","电气火灾-"),

    /**
     * 塔吊告警
     */
    TOWER(5,"塔吊告警","塔吊-"),

    /**
     * 升降机告警
     */
    LIFT(6,"升降机告警","升降机-"),

    /**
     * 卸料平台告警
     */
    DISCHARGE(7,"卸料平台告警","卸料平台-"),

    /**
     * AI识别
     */
    AI(8,"AI识别",null);

    AlarmEnum(Integer type,String name,String ruleNamePre) {
        this.type = type;
        this.name = name;
        this.ruleNamePre = ruleNamePre;
    }

    /**
     * 告警类型
     */
    private Integer type;

    /**
     * 告警类型名称
     */
    private String name;

    /**
     * 匹配告警类型前缀(多个逗号分隔)
     */
    private String ruleNamePre;

    /**
     * 通过type获取对应枚举
     */
    public static AlarmEnum getByType(Integer type){
        List<AlarmEnum> enums = Arrays.stream(AlarmEnum.values()).filter(a -> a.getType().equals(type)).collect(Collectors.toList());
        return enums.get(0);
    }
}
